export interface PartitionItem {
    name: string
    size: number
    used: number
    mount: string
    fs: string
}

export interface DiskItem {
    device: string
    model: string
    size: number
    used: number
    type: string
    interface: string
    partitions: Array<PartitionItem>
    SMART: {
        smart_available: boolean
        attributes?: Partial<SMART_DICT>
    }
}

export interface SMART_DICT {
    _model: string
    _serial: string
    _health: string
    _temperature: number
    _rotation_rate: number
    model: SMART_VALUE_string
    serial: SMART_VALUE_string
    health: SMART_VALUE_string
    temperature: SMART_VALUE_number
    rotation_rate: SMART_VALUE_number
    Raw_Read_Error_Rate: SMART_VALUE_number
    Reallocated_Sector_Ct: SMART_VALUE_number
    Power_On_Hours: SMART_VALUE_number
    Power_Cycle_Count: SMART_VALUE_number
    Read_Soft_Error_Rate: SMART_VALUE_number
    Unknown_Attribute: SMART_VALUE_number
    Unused_Rsvd_Blk_Cnt_Tot: SMART_VALUE_number
    Program_Fail_Cnt_Total: SMART_VALUE_number
    Runtime_Bad_Block: SMART_VALUE_number
    End_to_End_Error: SMART_VALUE_number
    Reported_Uncorrect: SMART_VALUE_number
    Command_Timeout: SMART_VALUE_number
    Airflow_Temperature_Cel: SMART_VALUE_number
    Temperature_Celsius: SMART_VALUE_number
    Hardware_ECC_Recovered: SMART_VALUE_number
    Reallocated_Event_Count: SMART_VALUE_number
    Current_Pending_Sector: SMART_VALUE_number
    Offline_Uncorrectable: SMART_VALUE_number
    UDMA_CRC_Error_Count: SMART_VALUE_number
    Unknown_SSD_Attribute: SMART_VALUE_number
    power_on_hours: SMART_VALUE_number
}
interface SMART_VALUE {
    id: string | number
    text: string
    value: number | string
}
interface SMART_VALUE_string extends SMART_VALUE {
    value: string
}
interface SMART_VALUE_number extends SMART_VALUE {
    value: number
}
